this 是 function 執行時,自動生成的一個內部物件。
在大多數的情況下, this 代表的就是呼叫 function 的物件
作為物件方法(最常使用)
obj.fn()
範例:只需知道在哪個物件下被呼叫
function callName(){
console.log(this, this.myName)
}
var family = {
myName: '小明家',
callName: callName
}
family.callName();
//整包family物件, 小明家
因為是在family這個物件下被呼叫的,所以this是family
function callName(){
console.log(this, this.myName)
}
var family = {
myName: '小明家',
callName: callName,
ming: { //包兩層物件
myName: '小明',
callName: callName,
}
}
family.callName(); //整包family物件, 小明家
family.ming.callName(); //整包ming物件, 小明
範例:this 與呼叫位置有關
var myName = '杰倫'
var family = {
myName: '小明家',
callName: function(){
console.log(this.myName)
}
}
var callName = family.callName(); //小明家
callName(); //杰倫
因為在全域的環境下執行,所以this就不會指向函式
簡易呼叫 simple call(不建議在這使用 this)
bind, apply, call 方法 (把函式綁定特定 this 的方法)
以上範例來自六角學院 JS 核心影音課程